/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.catosist.run.dataaccess.domain.hibernate;

import com.catosist.run.dataaccess.base.hibernate.HibernateGenericDAO;
import com.catosist.run.dataaccess.domain.MantenimientoDao;
import com.catosist.run.dataaccess.model.MantenimientoVO;
import java.util.List;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author Bicho
 */
public class HibernateMantenimientoDao extends HibernateGenericDAO<MantenimientoVO, Integer> implements MantenimientoDao{
    public HibernateMantenimientoDao() {
        super(MantenimientoVO.class);
    }

    @Override
    public List<MantenimientoVO> getMantenimientoById(int vehiculoId){
        DetachedCriteria detachedCriteria = DetachedCriteria.forClass(MantenimientoVO.class);
        detachedCriteria.add(Restrictions.eq("vehiculo.id", vehiculoId));
        List<MantenimientoVO> mantenimientoVOs = listByCriteria(detachedCriteria);
        return mantenimientoVOs;
    }

    public List<MantenimientoVO> getAllGroupByDescription() {
        return this.getSession().
                createSQLQuery("SELECT * FROM mantenimiento group by descripcion;").
                addEntity(MantenimientoVO.class).list();
    }

    public List<MantenimientoVO> getAllGroupByDetalle() {
        return this.getSession().
                createSQLQuery("SELECT * FROM mantenimiento group by detalle;").
                addEntity(MantenimientoVO.class).list();
    }

    public List<MantenimientoVO> getAllGroupByUnidadMedida() {
        return this.getSession().
                createSQLQuery("SELECT * FROM mantenimiento group by unidadmedida;").
                addEntity(MantenimientoVO.class).list();
    }
    
}
